package com.hrpmar.mapper;

import com.hrpmar.controller.dto.DrugstockDto;
import com.hrpmar.controller.vo.DrugStatistics;
import com.hrpmar.pojo.Druginfo;
import com.hrpmar.pojo.Drugstock;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * Created by c on 2017-11-15.
 */
public interface DrugstockMapper {

    /**
     * 判断库存中是否存在该药品
     * @param drugNum
     * @return
     */
    public int existsDrug(String drugNum);

    /**
     * 根据药品编号获取库存
     * @param drugNum
     * @return
     */
    public int getStockByDrugNum(String drugNum);


    /**
     * 库存查询
     * @return
     */
    public List<Drugstock> searchDrugStork(@Param("dto")DrugstockDto dto,@Param("offset") Integer offset, @Param("limit") Integer limit);


    public Integer searchDrugStockCount(@Param("dto")DrugstockDto dto);


    public List<Druginfo> searchDeugstockName();

    /**
     * 查询详细信息
     * @param
     * @return
     */
    public List<Drugstock> searchdetailedBydrunNum(@Param("dto") DrugstockDto dto,@Param("offset")Integer offset,@Param("limit")Integer limit);

    /**
     * 分页总数
     * @param dto
     * @return
     */
    public Integer searchDetailCount(@Param("dto") DrugstockDto dto);

    /**
     * 修改库存信息
     * @param drugstock
     * @return
     */
    public Integer updateDrugstockInfo(Drugstock drugstock);

    /**
     * 库存预警
     * @return
     */
    public List<Drugstock> searchDrugstockinsufficient(@Param("dto") DrugstockDto dto,@Param("offset") Integer offset,@Param("limit") Integer limit);

    /**
     * 查询总条数
     * @return
     */
    public Integer searchDrugstockInsufficientCounr(@Param("dto") DrugstockDto dto);


    /**
     * 获取库存不足的不分页的
     * @return
     */
    public List<Drugstock> searchNoFenYe(@Param("drugNum") String drugNum);


    /**
     * 批量补货查询
     * @param stoNum
     * @return
     */
    public Drugstock searchDan(String stoNum);

    /**
     * 添加库存
     * @param drugstock
     */
    public void addDrugStock(Drugstock drugstock);

    /**
     * 获取库存最后一个编号
     * @return
     */
    public String getLastStoNum();


    /**
     * 查看过期的药品
     * @return
     */
    public List<Drugstock> searchOverdueDruginfo(@Param("dto") DrugstockDto dto);

    /**
     * 药品过期
     * @return
     */
    public Drugstock searchDetoryDruginfo(String stoNum);

    /**
     * 根据药品编号查询该药品的所有批号
     * @param drugNum
     * @return
     */
    public List<Drugstock> searchStockByDrugNum(String drugNum);

    /**
     * 根据库存药品批号获取该药品信息
     * @param stoLotnum
     * @return
     */
    public Drugstock getStoBystoLotnum(@Param("stoLotnum") String stoLotnum,@Param("drugNum") String drugNum);

    /**
     * 根据药品编号以及该药品的批号删除库存
     * @param drugNum
     * @param stoLotnum
     * @return
     */
    public int delDrugStoByDrug(@Param("stoPcs") Integer stoPcs,@Param("drugNum") String drugNum,@Param("stoLotnum") String stoLotnum);


    /**
     * 销毁药品
     * @return
     */
    public Integer DestoryDelete(String[] stoNum);

    /**
     * 根据药品编号获取库存批号
     * @param drugNum
     * @return
     */
    public List<Drugstock> searchStoLotnum(String drugNum);


    /**
     * 根据药品编号和批号查询库存
     * @param drugNum
     * @param stoLotnum
     * @return
     */
    public Drugstock searchDrugstockByDrugNumandStoLotnum(@Param("drugNum") String drugNum,@Param("stoLotnum") String stoLotnum);

    /**
     * 修改库存数量
     * @param stoPcs
     * @param stoNum
     * @return
     */
    public Integer updateDrugStockStoPcs(@Param("stoPcs")Integer stoPcs,@Param("stoNum") String stoNum);

    /**
     * 获取每种类型的药品库存总数量
     * @return
     */
    public List<DrugStatistics> getDrugStoStas();

}
